#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;
const int MAXM = 1e6 + 5;
int n;
int lst[MAXM]; // lst[v]: v 最后出现的位置

int main() {
    scanf("%d", &n);
    int ans = 1e9;
    for (int i = 1; i <= n; ++i) {
        int x;
        scanf("%d", &x);

        // 找到x前面的距离x最近的位置
        if (lst[x] != 0) {
            // [lst[x],i] 是一个可行区间
            ans = std::min(ans, i - lst[x] + 1);
        }

        lst[x] = i;
    }
    printf("%d\n", ans == 1e9 ? -1 : ans);
    return 0;
}